C++的空类有哪些成员函数以及类的大小组成 您所在的位置:网站首页 into one成员有哪些 C++的空类有哪些成员函数以及类的大小组成

C++的空类有哪些成员函数以及类的大小组成

2024-07-09 05:35| 来源: 网络整理| 查看: 265

空类的默认成员 class Empty { }

如果你只是声明一个空类,不做任何事情的话,编译器会自动为你生成一个默认构造函数、一个拷贝默认构造函数、一个默认拷贝赋值操作符、一个默认析构函数、取址运算符和一个取址运算符const。这些函数只有在第一次被调用时,才会别编译器创建。所有这些函数都是inline和public的。

class Empty { public: Empty(); // 缺省构造函数// Empty( const Empty& ); // 拷贝构造函数// ~Empty(); // 析构函数// Empty& operator=( const Empty& ); // 赋值运算符// Empty* operator&(); // 取址运算符 const Empty* operator&() const; // 取址运算符 const }; 空类的大小

在C++中空类会占一个字节,这是为了让对象的实例能够相互区别。具体来说,空类同样可以被实例化,并且每个实例在内存中都有独一无二的地址,因此,编译器会给空类隐含加上一个字节,这样空类实例化之后就会拥有独一无二的内存地址。如果没有这一个字节的占位,那么空类就无所谓实例化了,因为实例化的过程就是在内存中分配一块地址。 注意:当该空白类作为基类时,该类的大小就优化为0了,这就是所谓的空白基类最优化。 注意:空白基类最优化无法被施加于多重继承上只适合单一继承。

 

类的大小

首先:我们要知道什么是类的实例化,所谓类的实例化就是在内存中分配一块地址. 那我们先看看一个例子:

#include class a {}; class b{}; class c:public a{ virtual void fun()=0; }; class d:public b,public c{}; int main() { cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有